package com.rsk.utils.algorithm;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public class RecursionAlgorithm {
	
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static List<Map> menuList(List<Map> list, String Id, String pId){
		List<Map> retrunList = new LinkedList<Map>(); 
		int listSize = list.size();
		for (int i = 0; i < listSize; i++) {
			Map<String,Object> mapArr = new LinkedHashMap<String, Object>(); 
			Map map = list.get(i);
		    if(map.get(""+pId+"").toString().equals("0")){ 
		    	mapArr = map;
		        List<Map> reMap = menuChild(list, Id, map.get(""+Id+"").toString(), pId);
		    	if(reMap.size()>0){
		    		mapArr.put("childList", menuChild(list, Id, map.get(""+Id+"").toString(), pId));  
		    	}
		    	retrunList.add(mapArr); 
		    } 
		}
	    return retrunList; 
	  } 

	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static List<Map> menuChild(List<Map> menu, String Id, String IdValue, String pId){ 
	    List<Map> lists = new ArrayList<Map>(); 
	    for (int i = 0; i < menu.size(); i++) {
	    	 Map<String,Object> childArray = new LinkedHashMap<String, Object>(); 
	    	 Map map = menu.get(i);
		      if(map.get(""+pId+"").toString().equals(IdValue)){ 
		    	  childArray = map;
		    	  List<Map> reMap = menuChild(menu, Id, map.get(""+Id+"").toString(), pId);
		    	  if(reMap.size()>0){
		    		  childArray.put("childList", menuChild(menu, Id, map.get(""+Id+"").toString(), pId));
		    	  }
		    	  lists.add(childArray); 
		      } 
		}
	    return lists; 
	  } 
}
